一、广度优先遍历
广度优先遍历是点,利用队列,思想是这样的。对于第一个点,先是搜索所有与之为邻边的所有的点进队列,然后出队列,重复操作,直至遍历完所有点。
二、数据结构和算法
1、队列
略,参考我之前写的队列。
2、算法
//======================广度优先遍历===============
void BFSTraverse_L(OLGraph G){
//初始化visited数组
for (int i = 0; i < G.vexnum; i++)
{
visited[i] = false;
}
SqQueue queue;//顺序队列
InitQueue_Sq(queue);//初始化队列
for (int i = 0; i < G.vexnum; i++)
{
if (visited[i] == false)
{
//对没有访问的点访问并进队列
visited[i] = true;
printf("%c",G.xlist[i].data);
EnQueue_Sq(queue,i); //从i这个点开始广度遍历
while (!IsQueueEmpty_Sq(queue))
{
int w;
DeQueue_Sq(queue, w);//返回w这个索引
//进入到下一个结点, 如